package com.loong.android.tools;

public class Base64 {
    //默认标志位
    public final static int DEFAULT = android.util.Base64.DEFAULT;
    //省略编码后内容的"="号
    public final static int NO_PADDING = android.util.Base64.NO_PADDING;
    //省略编码后内容的所有换行符，输出内容在一条直线
    public final static int NO_WRAP = android.util.Base64.NO_WRAP;
    //以CRLF作为换行符
    public final static int CRLF = android.util.Base64.CRLF;
    //使用URL安全字符（参见 RFC 3548 第 4 节），其中 - 和 _ 用于代替 + 和 /
    public final static int URL_SAFE = android.util.Base64.URL_SAFE;
    public final static int NO_CLOSE = android.util.Base64.NO_CLOSE;

    /**
     * 编码到文本
     * 
     * @param data 待编码的数据
     */
    public static String encodeToString(String data) {
        return encodeToString(data, DEFAULT);
    }

    /**
     * 编码到文本
     *
     * @param data 待编码的数据
     * @param flags 标志位
     */
    public static String encodeToString(String data, int flags) {
        return android.util.Base64.encodeToString(data.getBytes(), flags);
    }

    /**
     * 编码到文本
     *
     * @param data 待编码的数据
     */
    public static String encodeToString(byte[] data) {
        return encodeToString(data, DEFAULT);
    }

    /**
     * 编码到文本
     *
     * @param data 待编码的数据
     * @param flags 标志位
     */
    public static String encodeToString(byte[] data, int flags) {
        return android.util.Base64.encodeToString(data, flags);
    }

    /**
     * 编码到文本
     *
     * @param data 待编码的数据
     * @param offset 起始位置
     * @param len 长度
     */
    public static String encodeToString(byte[] data, int offset, int len) {
        return android.util.Base64.encodeToString(data, offset, len, DEFAULT);
    }

    /**
     * 编码到文本
     *
     * @param data 待编码的数据
     * @param offset 起始位置
     * @param len 长度
     * @param flags 标志位
     */
    public static String encodeToString(byte[] data, int offset, int len, int flags) {
        return android.util.Base64.encodeToString(data, offset, len, flags);
    }

    /**
     * 编码
     *
     * @param data 待编码的数据
     */
    public static byte[] encode(String data) {
        return encode(data, DEFAULT);
    }

    /**
     * 编码
     *
     * @param data 待编码的数据
     * @param flags 标志位
     */
    public static byte[] encode(String data, int flags) {
        return android.util.Base64.encode(data.getBytes(), flags);
    }

    /**
     * 编码
     *
     * @param data 待编码的数据
     */
    public static byte[] encode(byte[] data) {
        return encode(data, DEFAULT);
    }

    /**
     * 编码
     *
     * @param data 待编码的数据
     * @param flags 标志位
     */
    public static byte[] encode(byte[] data, int flags) {
        return android.util.Base64.encode(data, flags);
    }

    /**
     * 编码
     *
     * @param data 待编码的数据
     * @param offset 起始位置
     * @param len 长度
     */
    public static byte[] encode(byte[] data, int offset, int len) {
        return android.util.Base64.encode(data, offset, len, DEFAULT);
    }

    /**
     * 编码
     *
     * @param data 待编码的数据
     * @param offset 起始位置
     * @param len 长度
     * @param flags 标志位
     */
    public static byte[] encode(byte[] data, int offset, int len, int flags) {
        return android.util.Base64.encode(data, offset, len, flags);
    }

    /**
     * 解码到文本
     *
     * @param data 待解码的数据
     */
    public static String decodeToString(String data) {
        return decodeToString(data, DEFAULT);
    }

    /**
     * 解码到文本
     *
     * @param data 待解码的数据
     * @param flags 标志位
     */
    public static String decodeToString(String data, int flags) {
        return new String(android.util.Base64.decode(data, flags));
    }

    /**
     * 解码到文本
     *
     * @param data 待解码的数据
     */
    public static String decodeToString(byte[] data) {
        return decodeToString(data, DEFAULT);
    }

    /**
     * 解码到文本
     *
     * @param data 待解码的数据
     * @param flags 标志位
     */
    public static String decodeToString(byte[] data, int flags) {
        return new String(android.util.Base64.decode(data, flags));
    }

    /**
     * 解码到文本
     *
     * @param data 待解码的数据
     * @param offset 起始位置
     * @param len 长度
     */
    public static String decodeToString(byte[] data, int offset, int len) {
        return new String(android.util.Base64.decode(data, offset, len, DEFAULT));
    }

    /**
     * 解码到文本
     *
     * @param data 待解码的数据
     * @param offset 起始位置
     * @param len 长度
     * @param flags 标志位
     */
    public static String decodeToString(byte[] data, int offset, int len, int flags) {
        return new String(android.util.Base64.decode(data, offset, len, flags));
    }

    /**
     * 解码
     *
     * @param data 待解码的数据
     */
    public static byte[] decode(String data) {
        return decode(data, DEFAULT);
    }

    /**
     * 解码
     *
     * @param data 待解码的数据
     * @param flags 标志位
     */
    public static byte[] decode(String data, int flags) {
        return android.util.Base64.decode(data, flags);
    }

    /**
     * 解码
     *
     * @param data 待解码的数据
     */
    public static byte[] decode(byte[] data) {
        return decode(data, DEFAULT);
    }

    /**
     * 解码
     *
     * @param data 待解码的数据
     * @param flags 标志位
     */
    public static byte[] decode(byte[] data, int flags) {
        return android.util.Base64.decode(data, flags);
    }

    /**
     * 解码
     *
     * @param data 待解码的数据
     * @param offset 起始位置
     * @param len 长度
     */
    public static byte[] decode(byte[] data, int offset, int len) {
        return android.util.Base64.decode(data, offset, len, DEFAULT);
    }

    /**
     * 解码
     *
     * @param data 待解码的数据
     * @param offset 起始位置
     * @param len 长度
     * @param flags 标志位
     */
    public static byte[] decode(byte[] data, int offset, int len, int flags) {
        return android.util.Base64.decode(data, offset, len, flags);
    }
}
